package eitwitter;

import eitwitter.evaluation.StatsEvaluation;
import eitwitter.evaluation.Evaluation;
import eitwitter.learning.Learning;
import eitwitter.learning.models.BinomialModel;
import eitwitter.learning.models.ClassificationModel;
import eitwitter.normalization.Normalizer;
import eitwitter.normalization.SymbolsLinksTokenizer;
import java.io.File;


/**
 * Programme principal
 * @author AH & PJ
 */
public class Main {

	/** Chemin vers le fichier d'entrainement */
	final public static String TRAINING_FILE_PATH = "fichiers/decoupe/train.txt";
	
	/** Chemin vers le fichier de test */
	public static String TEST_FILE_PATH = "fichiers/decoupe/test.txt";

	/** Chemin vers le fichier des mots vides */
	final public static String STOPWORDS_FILE_PATH = "fichiers/stoptweet.txt";
	
	/**
	 * Point d'entree de l'application
	 */
	public static void main(String[] args) {
		TEST_FILE_PATH = args[0];

		// Chargement du fichier d'apprentissage passÃ© en paramÃ¨tre
		File trainingFile = new File(TRAINING_FILE_PATH);
		
		// Chargement du fichier de test passÃ© en paramÃ¨tre
		File testFile = new File(TEST_FILE_PATH);

		// Chargement du fichier d'apprentissage passÃ© en paramÃ¨tre
		File stopwordsFile = new File(STOPWORDS_FILE_PATH);

		// Initialisation de la methode de normalisation a utiliser
		Normalizer normalizer = new SymbolsLinksTokenizer();

		// Initialisation du modele de classification
		ClassificationModel model = new BinomialModel(0.3);

		// Creation de la classe d'apprentissage
		Learning learning = new Learning(normalizer, model);

		// Ajout de la liste des mots vides
		learning.addStopWordsFromFile(stopwordsFile);

		// Lancement de l'apprentissage avec le fichier d'entrainement
		learning.learnFromFile(trainingFile);

		// Creation de la classe d'evaluation
		//Evaluation evaluation = new CostsEvaluation(learning, 0.08);
		Evaluation evaluation = new StatsEvaluation(learning, 0.03);
	//	Evaluation evaluation = new SimpleEvaluation(learning);
		
		evaluation.printTweetCategories(testFile);
		


	}
}
